home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 7045 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.9 KB

  1. Path: li.net!sbda
  2. From: sbda@newshost.li.net (sbda)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Newbie Q: Arrays > 64K?
  5. Date: 17 Feb 1996 19:16:06 GMT
  6. Organization: LI Net (Long Island Network)
  7. Distribution: world
  8. Message-ID: <4g59hm$k60@linet06.li.net>
  9. References: <4f3ajc$oud@earth.superlink.net> <4f3daf$46g@sparcserver.lrz-muenchen.de>
  10. NNTP-Posting-Host: linet01.li.net
  11. X-Newsreader: TIN [version 1.2 PL2]
  12.  
  13. Kurt Watzka (ua302aa@sun2.lrz-muenchen.de) wrote:
  14. : rizzom@superlink.net writes:
  15.  
  16. : >Hi,
  17.  
  18. : >  I am using Turbo C++ 3.0 in DOS.  I would just like to know 
  19. : >how to declare an array that is larger than 64K.  I have tried 
  20. : >all of the memory models available and still get an error 
  21.  
  22. : You cannot portably have object with sizes greater than 32k in
  23. : C. So obviously, your compiler does not have a problem when it
  24. : gives you an error message for arrays larger than 64k.
  25.  
  26. : You could
  27.  
  28. :  1) Modify your data structure so that no object is larger than
  29. :     32k (The size of one "VMProc" should be less than 2k on 
  30. :     most machines, so an array of pointers to VMProc should 
  31. :     be possible on most machines, working somehow like this:)
  32.  
  33. :     VMProc *proc[64];
  34.  
  35. :     for (i = 0; i < 64; i+= 16) {
  36. :        VMProc *tmp = calloc(16, sizeof(VMProc));
  37. :        if (tmp == NULL)
  38. :       /* Handle error condition */
  39. :        for (j = 0; j < 16, j++)
  40. :       proc[i + j] = tmp + j;
  41. :     }
  42.  
  43. :     You have to check my assumption about the size of a VMProc
  44. :     on your machine, using your implementation.
  45.  
  46. :  2) Consider using an operating system that allows you to
  47. :     use larger objects and forget about portability.
  48.  
  49. : Kurt
  50. : --
  51. : | Kurt Watzka                             Phone : +49-89-2180-6254
  52. : | watzka@stat.uni-muenchen.de
  53. : | ua302aa@sunmail.lrz-muenchen.de
  54.  
  55.  
  56.  
  57. If you are using Turbo C 3.0 for DOS and need do declare an array larger 
  58. than 64K - there are several ways to do it. The easiest is the huge modifier.
  59.  
  60. Example: 100,000 byte character array
  61.  
  62.     char huge x[100000L];
  63.  
  64.